package code;

import java.io.Serializable;

public class Aresta implements Serializable {

    private String nome;
    private float custo;
    private No noDireita;
    private No noEsquerda;

    public Aresta(String nome, float custo, No noDireita, No noEsquerda) throws Exception {
        this.setNome(nome);
        this.setCusto(custo);
        this.setNoDireita(noDireita);
        this.setNoEsquerda(noEsquerda);
    }
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) throws Exception {
        if (nome == null || nome.isEmpty()) {
            throw new Exception("A aresta deve possuír um nome válido");
        }
        this.nome = nome;
    }

    public float getCusto() {
        return custo;
    }

    public void setCusto(float custo) {
        this.custo = custo;
    }

    public No getNoDireita() {
        return noDireita;
    }

    public void setNoDireita(No noDireita) {
        this.noDireita = noDireita;
    }

    public No getNoEsquerda() {
        return noEsquerda;
    }

    public void setNoEsquerda(No noEsquerda) {
        this.noEsquerda = noEsquerda;
    }
    
    @Override
    public String toString() {
        return this.nome;
    }

    public String getResultado() {
        return "Aresta " + this.nome + " (custo " + this.custo + ") liga " + this.getNoEsquerda().getNome() + " a " + this.getNoDireita().getNome() + ".";
    }  
}